package com.atmosphere.interfaces.component;

import com.jme.image.Texture;

/**
 * <code>IAstronomyComponent</code> defines the interface of a
 * component unit that is responsible for maintaining a single
 * astronomy body that rotates around a given axis at a given
 * rate to simulate the atmosphere astronomy system.
 * <p>
 * <code>IAstronomyComponent</code> provides the functionality
 * to properly setup the rotational motion of the maintained
 * astronomy geometry with given parameters. Typically these
 * rotational motion parameters should be synchronized with the
 * ones set for sunlight and moonlight in the atmosphere
 * <code>ILightingComponent</code>.
 * <p>
 * <code>IAstronomyComponent</code> defines an astronomy body
 * as a <code>Quad</code> geometry with given width and height
 * parameters. To simulate a Sun or Moon like astronomy body,
 * a transparent texture should be used.
 *
 * @author Yi Wang (Neakor)
 * @version Creation date: 05-20-2009 14:38 EST
 * @version Modified date: 05-20-2009 18:30 EST
 */
public interface IAstronomyComponent extends IAbstractAstronomy {

	/**
	 * Set the texture used for the astronomy body.
	 * @param texture The <code>Texture</code> to be used.
	 */
	public void setTexture(Texture texture);
	
	/**
	 * Set the size for the astronomy body.
	 * @param width The <code>Float</code> width.
	 * @param height The <code>Float</code> height.
	 */
	public void setSize(float width, float height);

	/**
	 * Retrieve the width of the body quad.
	 * @return The <code>Float</code> width value.
	 */
	public float getWidth();
	
	/**
	 * Retrieve the height of the body quad.
	 * @return The <code>Float</code> height value.
	 */
	public float getHeight();
}
